package br.rfpm.dominio.service;

import java.security.NoSuchAlgorithmException;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import br.rfpm.dao.GenericDao;
import br.rfpm.dominio.Usuario;
import br.rfpm.dominio.dao.UsuarioDao;
import br.rfpm.service.AbstractService;
import br.rfpm.service.ServiceException;
import br.rfpm.web.util.MD5;

@Service
public class UsuarioService extends AbstractService<Usuario, Long> {

	@Autowired
	private UsuarioDao usuarioDao;
	
	@Override
	protected GenericDao<Usuario, Long> getDao() {
		return this.usuarioDao;
	}

	public Usuario consultaUsuarioPorLogin(String login) {
		return this.usuarioDao.consultarPorLogin(login);
	}

	public Usuario autenticarUsuario(String login, String password) throws NoSuchAlgorithmException {
		Usuario usuario = this.consultaUsuarioPorLogin(login);
		if (usuario == null) {
			throw new ServiceException("O login e password digitados são incorretos.");
		}
		
		if (!usuario.getCredentials().equals(MD5.criptografar(password))) {
			throw new ServiceException("O login e password digitados são incorretos.");
		}
		usuario.setAuthenticated(Usuario.AUTHENTICATED);
		return usuario;
	}

}
